using Lzfy_Refund_Service.Models;

namespace Lzfy_Refund_Service.Repositories
{
    public interface IRefundTaskMasterRepository
    {
        Task<RefundTaskMaster?> GetByIdAsync(long id);
        Task<IEnumerable<RefundTaskMaster>> GetAllAsync();
        Task<(IEnumerable<RefundTaskMaster> data, int totalCount)> GetWithFilterAsync(
            DateTime? startDate = null,
            DateTime? endDate = null,
            string? username = null,
            string? fullname = null,
            int pageIndex = 1,
            int pageSize = 20);
        Task<IEnumerable<RefundTaskMaster>> GetByUsernameAsync(string username);
        Task<long> CreateAsync(RefundTaskMaster refundTaskMaster);
        Task<bool> UpdateAsync(RefundTaskMaster refundTaskMaster);
        Task<bool> DeleteAsync(long id);
        Task<RefundTaskMaster?> GetWithDetailsAsync(long id);
        Task<bool> UpdateBalanceFromDetailsAsync(long id);
    }
}